// pages/list/list.js
import {categories, shops} from '../../db/index'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    id: 0,
    shopList: [],
    page: 0,
    limit: 10,
    hasMore: false
  },

  goSearch() {
    wx.navigateTo({url: '/pages/search/search'})
  },

  goDetail(e) {
    const id = e.currentTarget.dataset.id
    wx.navigateTo({url: '/pages/detail/detail?id=' + id})
  },

  /**
   * 根据类别id改变标题
   */
  async getCategoryById() {
    const res = await categories.where({
      id: Number(this.data.id)
    }).get()

    wx.setNavigationBarTitle({
      title: res.data[0].name
    })
  },

  /**
   * 获取商品列表
   * @returns {Promise}
   */
  getShopList() {
    return shops.where({categoryId: Number(this.data.id)})
      .skip(this.data.page * this.data.limit)
      .limit(this.data.limit).get().then(res => {
        if (res.data.length > 0) {
          this.setData({
            shopList: this.data.shopList.concat(res.data)
          })
        } else {
          this.setData({
            hasMore: true
          })
        }
      })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: async function (options) {
    this.setData({
      id: options.id
    })
    await this.getCategoryById()
    this.getShopList().then()
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      page: 0,
      shopList: [],
      hasMore: false,
      value: ''
    })
    this.getShopList().then(() => {
      wx.stopPullDownRefresh()//刷新完后手动停止下拉刷新
    })
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if (this.data.hasMore) return//全部加载完后就不要请求数据了
    this.setData({
      page: ++this.data.page
    })
    this.getShopList().then()
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})
